/**
 * 
 */

package com.gustozzi.distribucion.negocio;

import java.util.List;

import com.gustozzi.distribucion.dao.util.DataAccessExceptions;
import com.gustozzi.domain.Despacho;
import com.gustozzi.domain.Devolucion;
import com.gustozzi.domain.GuiaRemision;
import com.gustozzi.domain.HojaRuta;
import com.gustozzi.domain.Pedido;
import com.gustozzi.domain.Reserva;
import com.gustozzi.domain.Usuario;

/**
 * @author FABRIZIO
 * 
 */
public interface DistribucionBO
{
    public Usuario obtenerUsuario(String usuario, String password) throws DataAccessExceptions;

    public List<Despacho> obtenerListaDespacho(String codigo, String codigoCentroDistribucion, String fechaDesde,
            String fechaHasta) throws DataAccessExceptions;

    public String eliminarDespacho(String codigo) throws DataAccessExceptions;

    public String reprogramarPedido(String codigo) throws DataAccessExceptions;

    public List<Pedido> obtenerListaPedido(String codigo, String codigoCliente, String fechaDesde, String fechaHasta)
            throws DataAccessExceptions;

    public String guardarDespacho(String codigoDespacho, String codigoCentro, String fechaEntrega, String codigoResponsable, List<Pedido> listaPedidos, boolean indicadorAccion)
            throws DataAccessExceptions;

    public String devolverPedido(String codigo) throws DataAccessExceptions;

    public List<Reserva> obtenerListaReserva(String codigo, String codigoCentroDistribucion, String fechaDesde,
            String fechaHasta) throws DataAccessExceptions;

    public List<HojaRuta> obtenerListaHojasRuta(String codigo, String codigoCentroDistribucion, String fechaDesde,
            String fechaHasta) throws DataAccessExceptions;

    public List<GuiaRemision> obtenerListaGuiasRemision(String codigo, String fechaDesde, String fechaHasta)
            throws DataAccessExceptions;

    public String guardarReserva(String codigoReserva, String codigoCentroDistribucion, String codigoTipoEstado,
            List<Pedido> listaPedidos, boolean indicadorRegistro) throws DataAccessExceptions;

    public List<Pedido> obtenerListaPedidoXReserva(String codigoReserva) throws DataAccessExceptions;
    
    public List<Devolucion> obtenerListaDevoluciones(String codigo, String codigoCentroDistribucion, String fechaDesde,
            String fechaHasta) throws DataAccessExceptions;
    
    public String eliminarDevolucion(String codigo) throws DataAccessExceptions;
    
    public List<Pedido> obtenerListaPedidoXDevolucion(String codigo)
            throws DataAccessExceptions;
}